﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;
using Model;
using System.IO;
using System.Diagnostics;
using System.Text.RegularExpressions;
using NCRE学生考试端V1._0.教师端操作类;

namespace NCRE学生考试端V1._0
{
    public partial class frmScoreDetail : Form
    {
        public frmScoreDetail()
        {
            InitializeComponent();
        }

        #region 窗体单一显示-李金颖-2018-12-8 11:14:55
        private static frmScoreDetail FrmScoreDetail = null;
        public static frmScoreDetail GetInstance()
        {
            if (FrmScoreDetail==null||FrmScoreDetail.IsDisposed)
            {
                FrmScoreDetail = new frmScoreDetail();
            }
            return FrmScoreDetail;
        }
        #endregion
        
        //定义一个学生的实体
        StudentInfoEntity studentinfo = new StudentInfoEntity();
        #region 操作题学生得分情况 修改人：李金颖-加载题干前先清空处理-2018-12-12 11:43:36

       
        #region 得到Windows部分，学生的得分情况 李少然——陈新月——2018-4-30 09:47:10
        /// <summary>
        /// 得到Windows部分，学生的得分情况 李少然
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void getWindows()
        {
            try
            {
                textBox1.Text = "";//先清空题目信息
                #region 获取Windows题的做题记录
                //得到学生学号 
                studentinfo.studentID = txtStudentID.Text.Trim();
                studentinfo.studentName = txtStudentID.Text.Trim();
                //得到查询到的数据]
                TotalScoreBLL totalbll = new TotalScoreBLL();
                //将数据添加到datagridview表中
                DataTable dt = totalbll.ShowWindowsMesbll(studentinfo);
                dataGridView2.DataSource = null;
                dataGridView2.AllowUserToAddRows = false;
                dataGridView2.DataSource = dt;
                //设置学号不显示
                dataGridView2.Columns[0].Visible = false;
                //设置题目不显示
                dataGridView2.Columns[4].Visible = false;

                #endregion

                #region 利用全局变量，从题库中加载windows试题--周洲--2015年11月21日
                //将从数据库中取出的字段赋给一个字符串
                string newWinContent = null;
                //循环winQuestionDt取出里面的所有值
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    newWinContent += dt.Rows[i]["题目"].ToString();
                }
                //让字符串按照规律 赋给文本框 
                string[] sW = newWinContent.Split('。');
                for (int i = 0; i < sW.Length; i++)
                {
                    textBox1.Text += sW[i] + "\r\n";
                }
                #endregion
            }
            catch (Exception)
            {

                MessageBox.Show("该学生没有Windows题的做题记录！");
            }
            
        }
        #endregion


        #region 得到word部分 学生的得分情况 李少然——陈新月——2018-4-30 09:53:10
        /// <summary>
        /// 得到Word部分学生的得分情况
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void getWord()
        {
            try
            {
                textBox2.Text = "";//先清空题目信息
                //得到学生学号
                studentinfo.studentID = txtStudentID.Text.Trim();
                studentinfo.studentName = txtStudentID.Text.Trim();
                TotalScoreBLL totalbll = new TotalScoreBLL();
                //将数据添加到datagridview表中
                DataTable dt = totalbll.ShowWordMesbll(studentinfo);
                dataGridView3.DataSource = null;
                dataGridView3.AllowUserToAddRows = false;
                dataGridView3.DataSource = dt;
                //设置学号不显示
                dataGridView3.Columns[0].Visible = false;
                //设置题目不显示
                dataGridView3.Columns[4].Visible = false;

                #region 利用全局变量，从题库中加载word试题--周洲--2015年11月21日
                //将从数据库中取出的字段赋给一个字符串
                string newWordContent = null;
                //循环winQuestionDt取出里面的所有值
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    newWordContent += dt.Rows[i]["题目"].ToString();
                }
                //让字符串按照规律 赋给文本框 
                string[] sW = newWordContent.Split('。');
                for (int i = 0; i < sW.Length; i++)
                {
                    textBox2.Text += sW[i] + "\r\n";
                }
                #endregion
            }
            catch (Exception)
            {

                MessageBox.Show("该学生没有Word做题记录！"); ;
            }
           
            

        }
        #endregion

        #region 得到EXCEL部分 学生的得分情况 李少然——陈新月——2018-4-30 09:53:21
        /// <summary>
        /// 得到EXCEL部分 学生的得分情况
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void getExcel()
        {
            try
            {
                textBox3.Text = "";//先清空题目信息
                //得到学生学号

                studentinfo.studentID = txtStudentID.Text.Trim();
                studentinfo.studentName = txtStudentID.Text.Trim();
                TotalScoreBLL totalbll = new TotalScoreBLL();
                //将数据添加到datagridview表中
                DataTable dt = totalbll.ShowExcelMesbll(studentinfo);
                dataGridView4.DataSource = null;
                dataGridView4.AllowUserToAddRows = false;
                dataGridView4.DataSource = dt;
                //设置学号不显示
                dataGridView4.Columns[0].Visible = false;
                //设置题目不显示
                dataGridView4.Columns[4].Visible = false;

                #region 利用全局变量，从题库中加载Excel试题--周洲--2015年11月21日
                //将从数据库中取出的字段赋给一个字符串
                string newExcelContent = null;
                //循环winQuestionDt取出里面的所有值
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    newExcelContent += dt.Rows[i]["题目"].ToString();
                }
                //让字符串按照规律 赋给文本框 
                string[] sW = newExcelContent.Split('。');
                for (int i = 0; i < sW.Length; i++)
                {
                    textBox3.Text += sW[i] + "\r\n";
                }
                #endregion
            }
            catch (Exception)
            {

                MessageBox.Show("该学生没有Excel做题记录！");
            }
            
        }
        #endregion

        #region 得到PPT部分，学生的得分情况 李少然——陈新月——2018-4-30 09:53:31
        /// <summary>
        /// 得到PPT部分，学生的得分情况 李少然
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void getPPT()
        {
            try
            {
                textBox4.Text = "";//先清空题目信息
                //得到学生学号
                StudentInfoEntity studentinfo = new StudentInfoEntity();
                studentinfo.studentID = txtStudentID.Text.Trim();
                studentinfo.studentName = txtStudentID.Text.Trim();
                TotalScoreBLL totalbll = new TotalScoreBLL();
                //将数据添加到datagridview表中
                DataTable dt = totalbll.ShowPptMesbll(studentinfo);
                dataGridView5.DataSource = null;
                dataGridView5.AllowUserToAddRows = false;
                dataGridView5.DataSource = dt;
                //设置学号不显示
                dataGridView5.Columns[0].Visible = false;
                //设置题目不显示
                dataGridView5.Columns[4].Visible = false;

                #region 利用全局变量，从题库中加载PPT试题--周洲--2015年11月21日
                //将从数据库中取出的字段赋给一个字符串
                string newPPTContent = null;
                //循环winQuestionDt取出里面的所有值
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    newPPTContent += dt.Rows[i]["题目"].ToString();
                }
                //让字符串按照规律 赋给文本框 
                string[] sW = newPPTContent.Split('。');
                for (int i = 0; i < sW.Length; i++)
                {
                    textBox4.Text += sW[i] + "\r\n";
                }
                #endregion
            }
            catch (Exception)
            {

                MessageBox.Show("该学生没有PPT做题记录！");
            }
            
        }
        #endregion

        #region 得到IE部分，学生的得分情况 李少然——陈新月——2018-4-30 09:53:39
        /// <summary>
        /// 得到IE部分，学生的得分情况 李少然
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void getIE()
        {
            try
            {
                textBox5.Text = "";
                //得到学生学号
                studentinfo.studentID = txtStudentID.Text.Trim();
                studentinfo.studentName = txtStudentID.Text.Trim();
                TotalScoreBLL totalbll = new TotalScoreBLL();
                //将数据添加到datagridview表中
                DataTable dt = totalbll.ShowIEMesbll(studentinfo);
                dataGridView6.DataSource = null;
                dataGridView6.AllowUserToAddRows = false;
                dataGridView6.DataSource = dt;
                //设置学号不显示
                dataGridView6.Columns[0].Visible = false;
                //设置题目不显示
                dataGridView6.Columns[4].Visible = false;

                #region 利用全局变量，从题库中加载IE试题--周洲--2015年11月21日
                //将从数据库中取出的字段赋给一个字符串
                string newIEContent = null;
                //循环winQuestionDt取出里面的所有值
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    newIEContent += dt.Rows[i]["题目"].ToString();
                }
                //让字符串按照规律 赋给文本框 
                string[] sW = newIEContent.Split('。');
                for (int i = 0; i < sW.Length; i++)
                {
                    textBox5.Text += sW[i] + "\r\n";
                }
                #endregion
            }
            catch (Exception)
            {

                MessageBox.Show("该学生没有IE的做题记录！");
            }
            
        }
        #endregion

        #endregion

        #region tabcontrol键索引的改变选择题型——陈新月——2018-03-31
        /// <summary>
        /// tabcontrol键索引的改变选择题型——陈新月——2018-03-31
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (tabControl1.SelectedIndex)
            {
                case 0:
                    tabControl1.SelectedTab = tabPage1;
                    break;
                case 1:
                    tabControl1.SelectedTab = tabPage2;
                    getWindows();
                    break;
                case 2:
                    tabControl1.SelectedTab = tabPage3;
                    getWord();
                    break;
                case 3:
                    tabControl1.SelectedTab = tabPage4;
                    getExcel();
                    break;
                case 4:
                    tabControl1.SelectedTab = tabPage5;
                    getPPT();
                    break;
                case 5:
                    tabControl1.SelectedTab = tabPage6;
                    getIE();
                    break;
                default:
                    break;
            }
        }
        #endregion

        #region 查询学生的总成绩--周洲--2015-12-14——陈新月——2018-4-30 09:44:51

        #region 查询学生的选择题成绩方法——陈新月——2018-03-31
        public void getSelect()
        {         
            studentinfo.studentID = txtStudentID.Text.Trim();
            studentinfo.studentName = txtStudentID.Text.Trim();
            TotalScoreBLL totalbll = new TotalScoreBLL();         
            DataTable dt = totalbll.ShowSelectMesbll(studentinfo);
            
            dataGridView1.DataSource = null;
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.DataSource = dt;
            //设置学号不显示
            dataGridView1.Columns[1].Visible = false;
            //设置题目不显示
            dataGridView1.Columns[5].Visible = false;
            //设置选项A内容不显示
            dataGridView1.Columns[6].Visible = false;
            //设置选项B内容不显示
            dataGridView1.Columns[7].Visible = false;
            //设置选项C内容不显示
            dataGridView1.Columns[8].Visible = false;
            //设置选项D内容不显示
            dataGridView1.Columns[9].Visible = false;
            
            int j = 1;
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {                        
                this.dataGridView1.Rows[i].Cells["题号"].Value = j;
                j++;                
            }

                     

            //    #region 加载试题并切保存答题信息
            //    //1.查询数据，返回List<QuestionRecordEntity)       
            if (dt.Rows.Count != 0)
            {
                List<SelectQuestionRecordEntity> listRecord = new List<SelectQuestionRecordEntity>();
                //将datatable中的数据赋值给selectQuestionEntity实体 
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //实例化一个选择题实体
                    SelectQuestionRecordEntity qe = new SelectQuestionRecordEntity();
                    qe.QuestionID = dt.Rows[i]["题号"].ToString();
                    qe.ExamAnswer = dt.Rows[i]["学生答案"].ToString();
                    listRecord.Add(qe);
                }
                
                int num = 0;
                //先清除panel控件中用户控件的记录，然后在加载
                flowLayoutPanel1.Controls.Clear();
                //2.将listQuestion添加到用户控件中
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //添加第i个用户控件到窗体上
                    UCTeacherSelect uc = new UCTeacherSelect();
                    uc.Name = i.ToString();                   
                    flowLayoutPanel1.Controls.Add(uc);
                    //将试题信息绑定到用户控件上
                    uc.label1.Text = dt.Rows[i]["QuestionContent"].ToString();
                    uc.label2.Text = dt.Rows[i]["OptionA"].ToString();
                    uc.label3.Text = dt.Rows[i]["OptionB"].ToString();
                    uc.label4.Text = dt.Rows[i]["OptionC"].ToString();
                    uc.label5.Text = dt.Rows[i]["OptionD"].ToString();
                    uc.BindDataToSelf(listRecord[i],i);              
                    num = i + 1;
                    uc.Choice2.Text = "选择题" + num;
                   
                }
                //当前页数统计和显示


            }
            else
            {
                MessageBox.Show(this, "您还没有试题，请联系管理员", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                //设置其他tab页不可选
            }         
        }
        #endregion

        #region 根据学院id查询学院名称——陈新月——2018-03-31
        public void getCollegeName()
        {
            //得到学生学号或者姓名
            studentinfo.studentID = txtStudentID.Text.Trim();
            studentinfo.studentName = txtStudentID.Text.Trim();
            TotalScoreBLL totalbll = new TotalScoreBLL();
            DataTable dt = totalbll.SelectStudentinfo(studentinfo);
            studentinfo.CollegeID = dt.Rows[0][1].ToString();
            DataTable selectCollageName = totalbll.SelectCollageName(studentinfo);
            lblCollage.Text = selectCollageName.Rows[0][0].ToString();
        }
        #endregion

        #region 点击查询 修改人：李金颖-单击查询跳转选择题显示界面-2018-12-12 14:38:48
        private void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                //每次单击查询后，都默认显示到选择题界面
                tabControl1.SelectedTab = tabControl1.TabPages[0];

                tabControl1.Enabled = true;
                //得到学生学号或者姓名
                studentinfo.studentID = txtStudentID.Text.Trim();
                studentinfo.studentName = txtStudentID.Text.Trim();
                TotalScoreBLL totalbll = new TotalScoreBLL();
                DataTable dt = totalbll.SelectStudentinfo(studentinfo);
                getCollegeName();
                lblStudentId.Text = dt.Rows[0][0].ToString();
                lblStuName.Text = dt.Rows[0][3].ToString();
                lblmajor.Text = dt.Rows[0][4].ToString();
                lblGrade.Text = dt.Rows[0][7].ToString();

                //将数据添加到datagridview表中
                getSelect();
                


            }
            catch (Exception)
            {

                MessageBox.Show("没有查到该学生的信息！ ");
            }
        }
        #endregion

        #endregion

        #region 限制学号文本框
        private void txtStudentID_MouseDown(object sender, MouseEventArgs e)
        {
            txtStudentID.SelectionStart = 0;

            txtStudentID.SelectionLength = txtStudentID.Text.Length;

            txtStudentID.SelectAll();
        }
        #endregion

        #region 得到PPT部分，学生的得分情况 王荣晓
        /// <summary>
        /// 得到PPT部分，学生的得分情况 王荣晓
        /// </summary>
        /// <param name = "sender" ></ param >
        /// < param name="e"></param>
        //private void btnShowSelect_Click(object sender, EventArgs e)
        //{
        //    得到学生学号
        //    StudentInfoEntity studentinfo = new StudentInfoEntity();
        //    studentinfo.studentID = txtStudentID.Text.Trim();
        //    TotalScoreBLL totalbll = new TotalScoreBLL();
        //    将数据添加到datagridview表中
        //    DataTable dt = totalbll.ShowSelectMesbll(studentinfo);
        //    dataGridView1.DataSource = null;
        //    dataGridView1.AllowUserToAddRows = false;
        //    dataGridView1.DataSource = dt;
        //}


        #endregion

        #region 导出考生答卷（已注释）
        //private void btnExport_Click(object sender, EventArgs e)
        //{
        //    if (txtStudentID.Text.Trim() == "请输入学生的学号")
        //    {
        //        MessageBox.Show("请输入学号", "提示", MessageBoxButtons.OK,
        //        MessageBoxIcon.Warning);
        //    }
        //    else
        //    {
        //        ExcelExport excelexcport = new ExcelExport();
        //        excelexcport.setExcel(dataGridView1, txtStudentID.Text.ToString());
        //    }
        //}
        #endregion

        #region 下载考生试卷答题记录——陈新月——2018-03-29
        private void btnDownload_Click(object sender, EventArgs e)
        {
            if (dataGridView1.Rows.Count == 0)
            {
                MessageBox.Show("无答题信息，请重新选择后下载");
            }
            else
            {
                //将原来的下载界面上所有的数据修改成下载选中行的数据（去掉了for循环）--杨光彩--2018-3-21 11:41:42
                //获取选中行的索引
                int rowIndex = 0;
                //将获取到的索引赋给rows实现下载选中行
                studentinfo.studentID = lblStudentId.Text.Trim();
                //获取选中行的日期参数
                string s = dataGridView1.Rows[rowIndex].Cells["考试时间"].Value.ToString();
                if (s != "")
                {
                    string m = Regex.Replace(dataGridView1.Rows[rowIndex].Cells["考试时间"].Value.ToString(), @"[^\d]*", "");

                    string allname = lblStudentId.Text.Trim().ToString() + "-" + m;

                    MongoHelper mh = new MongoHelper("NCRE3");


                    string path = string.Format("D:\\" + allname + ".zip");
                    if (File.Exists(path))
                    {
                        MessageBox.Show(string.Format("D:\\" + allname + ".zip" + "已经存在,请先删除后再下载！"));
                    }
                    else
                    {
                        try
                        {
                            //下载
                            mh.DownLoad(allname + ".zip", studentinfo.CollegeID);
                            File.Move(allname + @".zip", path);

                            MessageBox.Show("文件下载成功，默认下载到D盘，点击确定打开压缩文件");
                            Process.Start(path);
                        }
                        catch (Exception)
                        {                     
                            
                            MessageBox.Show("文件下载失败！");
                        }
                        

                       
                    }
                }

            }
        }


        #endregion

        #region 窗体卸载将此对象回收——刁琳童——2018年12月12日
        private void frmScoreDetail_FormClosed(object sender, FormClosedEventArgs e)
        {
            FrmScoreDetail = null;
        }
        #endregion
    }
}
